home *** CD-ROM | disk | FTP | other *** search
/ Aminet 12 / Aminet 12 (1996)(GTI - Schatztruhe)[!][Jun 1996].iso / Aminet / dev / e / eiffel.lha / flc / source / system.e < prev    next >
Encoding:
Text File  |  1996-01-27  |  17.4 KB  |  664 lines

  1.  
  2. -> Copyright © 1995, Guichard Damien.
  3.  
  4. -> The entire Eiffel system, including kernel classes
  5.  
  6. -> TO DO :
  7. ->   ARRAY[G], BIT n, REAL, DOUBLE, POINTER kernel classes
  8.  
  9. OPT MODULE
  10.  
  11. MODULE '*errors','*eiffel_lex'
  12. MODULE '*parser','*prime_server'
  13. MODULE '*entity','*entity_tree','*kernel_class','*current'
  14. MODULE '*class','*feature','*function','*procedure','*variable','*constant'
  15. MODULE '*argument'
  16. MODULE '*code','*ame','*ame_code','*label_server'
  17.  
  18. -> The Eiffel system (set of classes)
  19. EXPORT DEF system:PTR TO entity_tree
  20.  
  21. -> Kernel classes
  22. EXPORT DEF any_class:PTR TO class
  23. EXPORT DEF none_class:PTR TO kernel_class
  24. EXPORT DEF integer_class:PTR TO kernel_class
  25. EXPORT DEF boolean_class:PTR TO kernel_class
  26. EXPORT DEF character_class:PTR TO kernel_class
  27. EXPORT DEF real_class:PTR TO kernel_class
  28. EXPORT DEF double_class:PTR TO kernel_class
  29. EXPORT DEF pointer_class:PTR TO kernel_class
  30. EXPORT DEF string_class:PTR TO class
  31. EXPORT DEF array_class:PTR TO class
  32.  
  33. EXPORT DEF class:PTR TO class       -> class beeing parsed (passes 1 and 2)
  34. EXPORT DEF current:PTR TO current   -> 'Current' class (passes 1 and 2)
  35.  
  36. EXPORT DEF lex:PTR TO eiffel_lex     -> lexical analyser (passes 1 and 2)
  37. EXPORT DEF prime:PTR TO prime_server -> Prime stream (pass 1)
  38. EXPORT DEF ll:PTR TO label_server    -> local label server (pass 2)
  39. EXPORT DEF gl:PTR TO label_server    -> global label server (pass 1)
  40. EXPORT DEF code:PTR TO ame_code      -> executable code generated (pass 2)
  41.  
  42. -> Vectors for routines from ANY
  43. ENUM IS_EQUAL=1,STANDARD_IS_EQUAL,COPY,STANDARD_COPY,LASTCHAR,LASTINT,
  44.      LASTSTRING,NEW_LINE,PUTCHAR,PUTINT,PUTSTRING,READCHAR,READINT,
  45.      READSTRING,BIT_SIZE,LAST_VECTOR
  46.  
  47. -> Vectors for routines from STRING
  48. ENUM MAKE=LAST_VECTOR,APPEND,CLEAR,IS_EMPTY,EXTEND,FILL_BLANK,
  49.      HASH_CODE,HEAD,INDEX_OF,ITEM,ITEM_CODE,LEFT_ADJUST,
  50.      PRECEDE, PREPEND,PUT,REMOVE,REMOVE_ALL_OCCURRENCES ,RIGHT_ADJUST,SHRINK,
  51.      SUBSTRING,TAIL,TO_INTEGER,TO_LOWER,TO_UPPER
  52.  
  53. -> Declare the root of the Eiffel system
  54. EXPORT PROC root(class_name,creator,file_name) HANDLE
  55.   DEF file=NIL
  56.   DEF errors:PTR TO LONG
  57.   errors := ['',
  58.     'Could not read source file',
  59.     'Could not create executable file',
  60.     'Feature not yet implemented',
  61.     'Not a creation feature',
  62.     'Syntax error',
  63.     'VAOL','VAPE','VAVE','VBAR','VBGV','VCCH(1)','VCCH(2)',
  64.     'VCFG(1)','VCFG(2)','VCRN','VDCN','VDJR','VDOC','VDRD(1)',
  65.     'VDRD(2)','VDRD(3)','VDRD(4)','VDRD(5)','VDRD(6)','VDRD(7)','VDRD(8)',
  66.     'VDRS(1)','VDRS(2)','VDRS(3)','VDRS(4)','VDUC','VDUS(1)','VDUS(2)',
  67.     'VDUS(3)','VDUS(4)','VEEN','VFFD(1)','VFFD(2)','VFFD(3)','VFFD(4)',
  68.     'VFFD(5)','VFFD(6)','VFFD(7)','VGCC(1)','VGCC(2)','VGCC(3)','VGCC(4)',
  69.     'VGCC(5)','VGCC(6)','VGCI','VGCP(1)','VGCP(2)','VGCP(3)','VGCP(4)',
  70.     'VGCP(5)','VGCS','VHAY','VHPR(1)','VHPR(2)','VHRC(1)','VHRC(2)',
  71.     'VIEX','VIRW','VJAR','VJRV','VKCN','VLCP','VLEC',
  72.     'VLEL(1)','VLEL(2)','VLEL(3)','VMCN','VMFN','VMRC','VMSS',
  73.     'VNCB','VNCC','VNCE','VNCF','VNCG','VNCH','VNCN',
  74.     'VNCS','VNCX','VOMB(1)','VOMB(2)','VOMB(3)','VOMB(4)','VOMB(5)',
  75.     'VOMB(6)','VQMC','VQUI','VREG','VRFA','VRLE(1)','VRLE(2)',
  76.     'VRRR(1)','VRRR(2)','VSCN','VSRC(1)','VSRC(2)','VTAT(1)','VTAT(2)',
  77.     'VTAT(3)','VTBT','VTCG','VTCT','VTEC','VTUG','VUAR(1)',
  78.     'VUAR(2)','VUCS','VUEX(1)','VUEX(2)','VUGV','VWBE','VWEQ',
  79.     'VWCA','VWID','VWMA','VWMS(1)','VWMS(2)','VWOE','VWST','VXRC','VXRT',
  80.     '']
  81.  
  82.   NEW code.buffer(16000)
  83.   code.global_labels(200,400)
  84.   code.local_labels(80,160)
  85.   code.putbinary({startup}+32,{end_startup}-4)
  86.  
  87.   NEW system
  88.   NEW current
  89.   NEW gl
  90.   NEW ll
  91.   NEW prime.create()
  92.  
  93.   class_graph(class_name)
  94.   explode(creator)
  95.   code.resolve_globals()
  96.   IF (file:=Open(file_name,NEWFILE))=NIL THEN Raise(ER_EXEFILE)
  97.   code.flush(file)
  98. EXCEPT DO
  99.   IF file THEN Close(file)
  100.   IF exception<>ER_NONE
  101.     IF exception="MEM"
  102.       WriteF('Not enough memory\n')
  103.       RETURN
  104.     ELSEIF exception<=ER_SYNTAX
  105.       WriteF('\s in \s, line \d\n',
  106.         errors[exception],class.name,lex.line)
  107.     ELSE
  108.       WriteF('Validity violation \s in \s, line \d\n',
  109.         errors[exception],UpperStr(class.name),lex.line)
  110.     ENDIF
  111.   ENDIF
  112. ENDPROC
  113.  
  114. -> construct a graph of classes
  115. PROC class_graph(class_name)
  116.   DEF skip
  117.   code.ame(I_LINK,M_LABEL,skip:=gl.next(),R_NONE)
  118.   kernel_none()
  119.   kernel_boolean()
  120.   kernel_numeric()
  121.   kernel_any()
  122.   kernel_character()
  123.   kernel_string()
  124.   kernel_array()
  125.   kernel_pointer()
  126.   NEW class.set_name(class_name,prime.next(),gl.next())
  127.   system.add(class)
  128.   class_declaration1()
  129.   class_declaration2()
  130.   code.ame(I_TABLE,M_LABEL,skip,R_NONE)
  131. ENDPROC
  132.  
  133. -> create the root object
  134. PROC explode(creator)
  135.   DEF f:PTR TO feature
  136.   DEF r:PTR TO procedure
  137.   code.ame(I_CREATE,class.access(),class.index(),R_NONE)
  138.   code.putF4(L,0,DREG,0,0,ARDIR,0)
  139.   f:=class.find_feature(creator)
  140.   IF f=NIL THEN Raise(ER_NOT_A_CREATION_FEATURE)
  141.   IF f.is_procedure()=FALSE THEN Raise(ER_NOT_A_CREATION_FEATURE)
  142.   r:=f
  143.   IF r.is_creator(class,none_class)=FALSE THEN
  144.     Raise(ER_NOT_A_CREATION_FEATURE)
  145.   IF r.arguments THEN Raise(ER_VSRC2)
  146.   code.ame(I_CALL,M_ROUTINE,r.vector(),R_NONE)
  147.   code.putword(IRTS)
  148. ENDPROC
  149.  
  150. -> NONE class
  151. PROC kernel_none()
  152.   NEW none_class.set_name('none',0,gl.next())
  153. ENDPROC
  154.  
  155. -> BOOLEAN class
  156. PROC kernel_boolean()
  157.   NEW boolean_class.set_name('boolean',prime.next(),0)
  158. ENDPROC
  159.  
  160. -> INTEGER, REAL, DOUBLE kernel classes
  161. PROC kernel_numeric()
  162.   NEW integer_class.set_name('integer',prime.next(),0)
  163.   NEW real_class.set_name('real',prime.next(),0)
  164.   NEW double_class.set_name('double',prime.next(),0)
  165. ENDPROC
  166.  
  167. -> ANY class
  168. -> ANY includes STANDARD_FILES and so provides IO facilities
  169. PROC kernel_any()
  170.   DEF r:PTR TO procedure
  171.   DEF f:PTR TO function
  172.   DEF arguments:PTR TO argument
  173.   DEF lab:LONG
  174.   DEF table:PTR TO LONG
  175.   NEW any_class.set_name('any',1,gl.next())
  176.   NEW string_class.set_name('string',prime.next(),gl.next())
  177.  
  178. -> is_equal (other:like Current):BOOLEAN
  179.   NEW arguments.create('other')
  180.   arguments.set_type(current)
  181.   NEW f.create('is_equal',any_class,boolean_class)
  182.   f.add_arguments(arguments)
  183.   any_class.add_feature(f)
  184.  
  185. -> frozen standard_is_equal (other:like Current):BOOLEAN
  186.   NEW arguments.create('other')
  187.   arguments.set_type(current)
  188.   NEW f.create('standard_is_equal',any_class,boolean_class)
  189.   f.add_arguments(arguments)
  190.   f.freeze()
  191.   any_class.add_feature(f)
  192.  
  193. -> copy (other:like Current)
  194.   NEW arguments.create('other')
  195.   arguments.set_type(current)
  196.   NEW r.create('copy',any_class,NIL)
  197.   r.add_arguments(arguments)
  198.   any_class.add_feature(r)
  199.  
  200. -> frozen standard_copy (other:like Current)
  201.   NEW arguments.create('other')
  202.   arguments.set_type(current)
  203.   NEW r.create('standard_copy',any_class,NIL)
  204.   r.add_arguments(arguments)
  205.   r.freeze()
  206.   any_class.add_feature(r)
  207.  
  208. -> lastchar:CHARACTER
  209.   NEW f.create('lastchar',any_class,character_class)
  210.   any_class.add_feature(f)
  211.  
  212. -> lastint:INTEGER
  213.   NEW f.create('lastint',any_class,integer_class)
  214.   any_class.add_feature(f)
  215.  
  216. -> laststring:STRING
  217.   NEW f.create('laststring',any_class,string_class)
  218.   any_class.add_feature(f)
  219.  
  220. -> new_line
  221.   NEW r.create('new_line',any_class,NIL)
  222.   any_class.add_feature(r)
  223.  
  224. -> putchar (c:CHARACTER)
  225.   NEW arguments.create('c')
  226.   arguments.set_type(character_class)
  227.   NEW r.create('putchar',any_class,NIL)
  228.   r.add_arguments(arguments)
  229.   any_class.add_feature(r)
  230.  
  231. -> putint (i:INTEGER)
  232.   NEW arguments.create('i')
  233.   arguments.set_type(integer_class)
  234.   NEW r.create('putint',any_class,NIL)
  235.   r.add_arguments(arguments)
  236.   any_class.add_feature(r)
  237.  
  238. -> putstring (s:STRING)
  239.   NEW arguments.create('s')
  240.   arguments.set_type(string_class)
  241.   NEW r.create('putstring',any_class,NIL)
  242.   r.add_arguments(arguments)
  243.   any_class.add_feature(r)
  244.  
  245. -> readchar
  246.   NEW r.create('readchar',any_class,NIL)
  247.   any_class.add_feature(r)
  248.  
  249. -> readint
  250.   NEW r.create('readint',any_class,NIL)
  251.   any_class.add_feature(r)
  252.  
  253. -> readstring
  254.   NEW r.create('readstring',any_class,NIL)
  255.   any_class.add_feature(r)
  256.  
  257. -> bit_size:INTEGER
  258.   NEW f.create('bit_size',any_class,integer_class)
  259.   any_class.add_feature(f)
  260.  
  261.   any_class.prepare_links()
  262.  
  263.   table:=[IS_EQUAL,{is_equal},{end_is_equal},
  264.     STANDARD_IS_EQUAL,{standard_is_equal},{end_standard_is_equal},
  265.     COPY,{copy},{end_copy},
  266.     STANDARD_COPY,{standard_copy},{end_standard_copy},
  267.     LASTCHAR,{lastchar},{end_lastchar},
  268.     LASTINT,{lastint},{end_lastint},
  269.     LASTSTRING,{laststring},{end_laststring},
  270.     NEW_LINE,{new_line},{end_new_line},
  271.     PUTCHAR,{putchar},{end_putchar},
  272.     PUTINT,{putint},{end_putint},
  273.     PUTSTRING,{putstring},{end_putstring},
  274.     READCHAR,{readchar},{end_readchar},
  275.     READINT,{readint},{end_readint},
  276.     READSTRING,{readstring},{end_readstring},
  277.     BIT_SIZE,{bit_size},{end_bit_size},
  278.     NIL]
  279.   WHILE table[]
  280.     any_class.link_routine(table[]++,lab:=gl.next())
  281.     code.define_global(lab)
  282.     code.putbinary(32+table[]++,-4+table[]++)
  283.   ENDWHILE
  284. ENDPROC
  285.  
  286. -> CHARACTER class
  287. PROC kernel_character()
  288.   NEW character_class.set_name('character',prime.next(),0)
  289. ENDPROC
  290.  
  291. -> STRING class
  292. PROC kernel_string()
  293.   DEF v:PTR TO variable
  294.   DEF r:PTR TO procedure
  295.   DEF f:PTR TO function
  296.   DEF arguments:PTR TO argument
  297.   DEF argm:PTR TO argument
  298.   DEF lab:LONG
  299.   DEF table:PTR TO LONG
  300.   string_class.add_parent(any_class)
  301.   string_class.creators_section()
  302.  
  303. -> creation make (n:INTEGER)
  304.   NEW arguments.create('n')
  305.   arguments.set_type(integer_class)
  306.   NEW r.create('make',any_class,NIL)
  307.   r.add_arguments(arguments)
  308.   string_class.add_feature(r)
  309.   r.as_creator(string_class,any_class)
  310.  
  311. -> append (s:STRING)
  312.   NEW arguments.create('s')
  313.   arguments.set_type(string_class)
  314.   NEW r.create('append',any_class,NIL)
  315.   r.add_arguments(arguments)
  316.   string_class.add_feature(r)
  317.  
  318. -> capacity:INTEGER
  319.   NEW v.create('capacity',any_class,NIL)
  320.   string_class.add_feature(v)
  321.  
  322. -> clear
  323.   NEW r.create('clear',any_class,NIL)
  324.   string_class.add_feature(r)
  325.  
  326. -> copy (other:STRING)
  327.   NEW arguments.create('other')
  328.   arguments.set_type(string_class)
  329.   NEW r.create('copy',any_class,NIL)
  330.   r.add_arguments(arguments)
  331.   string_class.redeclare_feature(r)  -> redefine copy
  332.  
  333. -> count:INTEGER
  334.   NEW v.create('count',any_class,NIL)
  335.   string_class.add_feature(v)
  336.  
  337. -> empty:BOOLEAN
  338.   NEW f.create('empty',any_class,boolean_class)
  339.   string_class.add_feature(f)
  340.  
  341. -> extend (c:CHARACTER)
  342.   NEW arguments.create('c')
  343.   arguments.set_type(character_class)
  344.   NEW r.create('extend',any_class,NIL)
  345.   r.add_arguments(arguments)
  346.   string_class.add_feature(r)
  347.  
  348. -> fill_blank
  349.   NEW r.create('fill_blank',any_class,NIL)
  350.   string_class.add_feature(r)
  351.  
  352. -> hash_code:INTEGER
  353.   NEW f.create('hash_code',any_class,integer_class)
  354.   string_class.add_feature(f)
  355.  
  356. -> head (n:INTEGER)
  357.   NEW arguments.create('n')
  358.   arguments.set_type(integer_class)
  359.   NEW r.create('head',any_class,NIL)
  360.   r.add_arguments(arguments)
  361.   string_class.add_feature(r)
  362.  
  363. -> index_of (c:CHARACTER; i:INTEGER):INTEGER
  364.   NEW arguments.create('c')
  365.   arguments.set_type(character_class)
  366.   NEW argm.create('i')
  367.   argm.set_type(integer_class)
  368.   arguments.add(argm)
  369.   NEW f.create('index_of',any_class,integer_class)
  370.   f.add_arguments(arguments)
  371.   string_class.add_feature(f)
  372.  
  373. -> is_equal (other:STRING):BOOLEAN  (inherited from ANY)
  374.   NEW arguments.create('other')
  375.   arguments.set_type(string_class)
  376.   NEW f.create('is_equal',any_class,boolean_class)
  377.   f.add_arguments(arguments)
  378.   string_class.redeclare_feature(f)  -> redefine is_equal
  379.  
  380. -> item (n:INTEGER):CHARACTER
  381.   NEW arguments.create('n')
  382.   arguments.set_type(integer_class)
  383.   NEW f.create('item',any_class,character_class)
  384.   f.add_arguments(arguments)
  385.   string_class.add_feature(f)
  386.  
  387. -> item_code (n:INTEGER):INTEGER
  388.   NEW arguments.create('n')
  389.   arguments.set_type(integer_class)
  390.   NEW f.create('item_code',any_class,integer_class)
  391.   f.add_arguments(arguments)
  392.   string_class.add_feature(f)
  393.  
  394. -> left_adjust
  395.   NEW r.create('left_adjust',any_class,NIL)
  396.   string_class.add_feature(r)
  397.  
  398. -> precede (c:CHARACTER)
  399.   NEW arguments.create('c')
  400.   arguments.set_type(character_class)
  401.   NEW r.create('precede',any_class,NIL)
  402.   r.add_arguments(arguments)
  403.   string_class.add_feature(r)
  404.  
  405. -> prepend (s:STRING)
  406.   NEW arguments.create('s')
  407.   arguments.set_type(string_class)
  408.   NEW r.create('prepend',any_class,NIL)
  409.   r.add_arguments(arguments)
  410.   string_class.add_feature(r)
  411.  
  412. -> put (c:CHARACTER; i:INTEGER)
  413.   NEW arguments.create('c')
  414.   arguments.set_type(character_class)
  415.   NEW argm.create('i')
  416.   argm.set_type(integer_class)
  417.   arguments.add(argm)
  418.   NEW r.create('put',any_class,NIL)
  419.   r.add_arguments(arguments)
  420.   string_class.add_feature(r)
  421.  
  422. -> remove (i:INTEGER)
  423.   NEW arguments.create('i')
  424.   arguments.set_type(integer_class)
  425.   NEW r.create('remove',any_class,NIL)
  426.   r.add_arguments(arguments)
  427.   string_class.add_feature(r)
  428.  
  429. -> remove_all_occurrences (c:CHARACTER)
  430.   NEW arguments.create('c')
  431.   arguments.set_type(character_class)
  432.   NEW r.create('remove_all_occurrences',any_class,NIL)
  433.   r.add_arguments(arguments)
  434.   string_class.add_feature(r)
  435.  
  436. -> right_adjust
  437.   NEW r.create('right_adjust',any_class,NIL)
  438.   string_class.add_feature(r)
  439.  
  440. -> shrink (s:STRING; n1:INTEGER; n2:INTEGER)
  441.   NEW arguments.create('s')
  442.   arguments.set_type(string_class)
  443.   NEW argm.create('n1')
  444.   argm.set_type(integer_class)
  445.   arguments.add(argm)
  446.   NEW argm.create('n2')
  447.   argm.set_type(integer_class)
  448.   arguments.add(argm)
  449.   NEW r.create('shrink',any_class,NIL)
  450.   r.add_arguments(arguments)
  451.   string_class.add_feature(r)
  452.  
  453. -> substring (n1:INTEGER; n2:INTEGER):STRING
  454.   NEW arguments.create('n1')
  455.   arguments.set_type(integer_class)
  456.   NEW argm.create('n2')
  457.   argm.set_type(integer_class)
  458.   arguments.add(argm)
  459.   NEW f.create('substring',any_class,string_class)
  460.   f.add_arguments(arguments)
  461.   string_class.add_feature(f)
  462.  
  463. -> tail (n:INTEGER)
  464.   NEW arguments.create('n')
  465.   arguments.set_type(integer_class)
  466.   NEW r.create('tail',any_class,NIL)
  467.   r.add_arguments(arguments)
  468.   string_class.add_feature(r)
  469.  
  470. -> to_integer:INTEGER
  471.   NEW f.create('to_integer',any_class,integer_class)
  472.   string_class.add_feature(f)
  473.  
  474. -> to_lower
  475.   NEW r.create('to_lower',any_class,NIL)
  476.   string_class.add_feature(r)
  477.  
  478. -> to_upper
  479.   NEW r.create('to_upper',any_class,NIL)
  480.   string_class.add_feature(r)
  481.  
  482. -> feature {NONE} ""
  483. -> it is a secret feature of STRING
  484. -> is embodies the array of characters
  485.   NEW v.create('',none_class,NIL)
  486.   string_class.add_feature(v)
  487.  
  488.   string_class.prepare_links()
  489.  
  490.   table:=[MAKE,{make},{end_make},
  491.     APPEND,{append},{end_append},
  492.     CLEAR,{clear},{end_clear},
  493.     COPY,{string_copy},{end_string_copy},
  494.     IS_EMPTY,{empty},{end_empty},
  495.     EXTEND,{extend},{end_extend},
  496.     FILL_BLANK,{fill_blank},{end_fill_blank},
  497.     HASH_CODE,{hash_code},{end_hash_code},
  498.     HEAD,{head},{end_head},
  499.     INDEX_OF,{index_of},{end_index_of},
  500.     IS_EQUAL,{string_is_equal},{end_string_is_equal},
  501.     ITEM,{item},{end_item},
  502.     ITEM_CODE,{item_code},{end_item_code},
  503.     LEFT_ADJUST,{left_adjust},{end_left_adjust},
  504.     PRECEDE,{precede},{end_precede},
  505.     PREPEND,{prepend},{end_prepend},
  506.     PUT,{put},{end_put},
  507.     REMOVE,{remove},{end_remove},
  508.     REMOVE_ALL_OCCURRENCES,{remove_all_occurrences},{end_remove_all_occurrences},
  509.     RIGHT_ADJUST,{right_adjust},{end_right_adjust},
  510.     SHRINK,{shrink},{end_shrink},
  511.     SUBSTRING,{substring},{end_substring},
  512.     TAIL,{tail},{end_tail},
  513.     TO_INTEGER,{to_integer},{end_to_integer},
  514.     TO_LOWER,{to_lower},{end_to_lower},
  515.     TO_UPPER,{to_upper},{end_to_upper},
  516.     NIL]
  517.  
  518.   WHILE table[]
  519.     string_class.link_routine(table[]++,lab:=gl.next())
  520.     code.define_global(lab)
  521.     code.putbinary(32+table[]++,-4+table[]++)
  522.   ENDWHILE
  523.  
  524. ENDPROC
  525.  
  526. -> ARRAY class
  527. PROC kernel_array()
  528.   NEW array_class.set_name('array',prime.next(),0)
  529. ENDPROC
  530.  
  531. -> POINTER class
  532. PROC kernel_pointer()
  533.   NEW pointer_class.set_name('pointer',prime.next(),0)
  534. ENDPROC
  535.  
  536.  
  537. startup: INCBIN 'startup/startup'
  538. end_startup:
  539.  
  540. is_equal: INCBIN 'ANY/is_equal'
  541. end_is_equal:
  542.  
  543. standard_is_equal: INCBIN 'ANY/standard_is_equal'
  544. end_standard_is_equal:
  545.  
  546. copy: INCBIN 'ANY/copy'
  547. end_copy:
  548.  
  549. standard_copy: INCBIN 'ANY/standard_copy'
  550. end_standard_copy:
  551.  
  552. lastchar: INCBIN 'ANY/lastchar'
  553. end_lastchar:
  554.  
  555. lastint: INCBIN 'ANY/lastint'
  556. end_lastint:
  557.  
  558. laststring: INCBIN 'ANY/laststring'
  559. end_laststring:
  560.  
  561. new_line: INCBIN 'ANY/new_line'
  562. end_new_line:
  563.  
  564. putchar: INCBIN 'ANY/putchar'
  565. end_putchar:
  566.  
  567. putint: INCBIN 'ANY/putint'
  568. end_putint:
  569.  
  570. putstring: INCBIN 'ANY/putstring'
  571. end_putstring:
  572.  
  573. readchar: INCBIN 'ANY/readchar'
  574. end_readchar:
  575.  
  576. readint: INCBIN 'ANY/readint'
  577. end_readint:
  578.  
  579. readstring: INCBIN 'ANY/readstring'
  580. end_readstring:
  581.  
  582. bit_size: INCBIN 'ANY/bit_size'
  583. end_bit_size:
  584.  
  585.  
  586. make: INCBIN 'STRING/make'
  587. end_make:
  588.  
  589. append: INCBIN 'STRING/append'
  590. end_append:
  591.  
  592. clear: INCBIN 'STRING/clear'
  593. end_clear:
  594.  
  595. string_copy: INCBIN 'STRING/copy'
  596. end_string_copy:
  597.  
  598. empty: INCBIN 'STRING/empty'
  599. end_empty:
  600.  
  601. extend: INCBIN 'STRING/extend'
  602. end_extend:
  603.  
  604. fill_blank: INCBIN 'STRING/fill_blank'
  605. end_fill_blank:
  606.  
  607. hash_code: INCBIN 'STRING/hash_code'
  608. end_hash_code:
  609.  
  610. head: INCBIN 'STRING/head'
  611. end_head:
  612.  
  613. index_of: INCBIN 'STRING/index'
  614. end_index_of:
  615.  
  616. string_is_equal: INCBIN 'STRING/is_equal'
  617. end_string_is_equal:
  618.  
  619. item: INCBIN 'STRING/item'
  620. end_item:
  621.  
  622. item_code: INCBIN 'STRING/item_code'
  623. end_item_code:
  624.  
  625. left_adjust: INCBIN 'STRING/left_adjust'
  626. end_left_adjust:
  627.  
  628. precede: INCBIN 'STRING/precede'
  629. end_precede:
  630.  
  631. prepend: INCBIN 'STRING/prepend'
  632. end_prepend:
  633.  
  634. put: INCBIN 'STRING/put'
  635. end_put:
  636.  
  637. remove: INCBIN 'STRING/remove'
  638. end_remove:
  639.  
  640. remove_all_occurrences: INCBIN 'STRING/remove_all_occurrences'
  641. end_remove_all_occurrences:
  642.  
  643. right_adjust: INCBIN 'STRING/right_adjust'
  644. end_right_adjust:
  645.  
  646. shrink: INCBIN 'STRING/shrink'
  647. end_shrink:
  648.  
  649. substring: INCBIN 'STRING/substring'
  650. end_substring:
  651.  
  652. tail: INCBIN 'STRING/tail'
  653. end_tail:
  654.  
  655. to_integer: INCBIN 'STRING/to_integer'
  656. end_to_integer:
  657.  
  658. to_lower: INCBIN 'STRING/to_lower'
  659. end_to_lower:
  660.  
  661. to_upper: INCBIN 'STRING/to_upper'
  662. end_to_upper:
  663.  
  664.